package com.study.spark.scala.chapter11

object Scala01_Generic_1 {
  def main(args: Array[String]): Unit = {
    // TODO scala中的泛型和java中大同小异
    val test1 : Test[User] = new Test[User] // OK
//    val test2 : Test[User] = new Test[Parent] // Error
    val test3 : Test[User] = new Test[SubUser]  // OK


    // 3.如果将泛型和类型联合使用，那么类型相同时，
    //      如果泛型存在父子类关系，那么联合的类型也具有父子类关系,称之为协变，+T
    //      如果泛型存在父子类关系，那么联合的类型也具有子父类关系,称之为逆变，-T

  }

  class Test[+T] {
  }
  class Parent {
  }
  class User extends Parent{
  }
  class SubUser extends User {
  }
}
